import java.util.Scanner;

public class TestDemo {

    public static int max2(int a, int b){
        return a > b ? a : b;
    }
    public static int max3(int a, int b, int c){
        return max2(max2(a, b), c);
    }
    public static void main(String[] args) {
        /*
        6 创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
        要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
         */
        System.out.println(max3(1,2,3));
    }

    public static void main5(String[] args) {
        /*
        5 调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
        如数组：[1,2,3,4,5,6]
        调整后可能是：[1, 5, 3, 4, 2, 6]
        */
        int[] arr = {1, 2, 3, 4, 5};
        int left = 0;
        int right = arr.length - 1;
        while (left < right){
            while ((arr[left] % 2 != 0) && (left < right)){
                left++;
            }
            while ((arr[right] % 2 == 0) && (left < right)){
                right--;
            }
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
        }
        for (int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + " ");
        }
    }

    public static void main4(String[] args) {
        // 4 有一组数据，只有一个数字是出现一次，其他是两次，请找出这个数字。
        int[] arr = {1, 2, 3, 2, 1};
        int sum = arr[0];
        for(int i = 1; i < arr.length; i++){
            sum = sum ^ arr[i];
        }
        System.out.println(sum);
    }

    public static void printOne(int n) {
        //3 获取一个数二进制序列中所有的偶数位和奇数位， 分别输出二进制序列
        for (int i = 30; i >= 0; i -= 2) {    //从后往前开始计算--打印偶数位
            System.out.print(((n >> i) & 1) + " ");
        }
        System.out.println();
        for(int i = 31; i >= 2; i -= 2){
            System.out.print(((n >> i) & 1) + " ");
        }
    }
    public static void main3(String[] args) {
       printOne(11);
    }

    public static int numOfOne(int n){
        //2求一个整数，在内存当中存储时，二进制1的个数。
        int count = 0;
        while (n != 0){
            if((n & 1) == 1){
                count++;
            }
            n = n >>> 1;    //无符号右移
        }
        return count;
    }
    public static int numOfOne2(int n){
        int count = 0;
        while (n != 0){
            count++;
            n = n & (n - 1);
        }
        return count;
    }

    public static void main2(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
//        findNum(n);
//        System.out.println(numOfOne(n));
        System.out.println(numOfOne2(n));
    }

    public static void findNum(int n){
        //1水仙花的扩展
        for(int i = 1; i <= n; i++){
            int tmp = i;
            int count = 0;
            while (tmp != 0){
                count++;
                tmp /= 10;
            }
            tmp = i;
            int sum = 0;
            while (tmp != 0){
                sum += Math.pow(tmp % 10, count);
                tmp /= 10;
            }
            if(sum == i){
                System.out.println(i);
            }
        }
    }
}
